export default class ArrayUtil {


    /**
     * 获取对象数组里的单独属性组装到数组
     * @param array
     * @param key
     */
    static getPropertyVals<T>(array: T[], key: keyof T): any[] {
        let result = []
        for (let arrayElement of array) {
            result.push(arrayElement[key])
        }
        return result
    }


    /**
     * 随机一个元素
     */
    static randomElement<T>(array: T[]): T {
        if (array == null || array.length == 0) {
            return null;
        }
        return array[GetRandomInt(0, array.length - 1)]
    }


    /**
     * @brief 把数组中的元素按随机顺序重新排列
     * @param array 需要排序的数组
     * @returns 随机排序后的数组
     */
    static shuffle<T>(array: T[]): T[] {
        for (let i = array.length - 1; i >= 0; i--) {
            let randomIndex = Math.floor(Math.random() * (i + 1));
            let itemAtIndex = array[randomIndex];
            array[randomIndex] = array[i];
            array[i] = itemAtIndex;
        }
        return array;
    }
}